// 模块导入
var express = require("express");
const path = require("path");
const fs = require("fs");

// 创建路由
var router = express.Router();

// mongoDB相关
// 导入模型
const accountsModel = require("../models/accounts");
const checkLogin = require("../middlewares/checklogin");

// // lowdb相关
// // 数据库  -- 使用的是lowdb模块配置的简单类型数据库
// const low = require("lowdb");
// const FileSync = require("lowdb/adapters/FileSync");
// const { error } = require("console");
// const { ifError } = require("assert");

// // 先判断是否存在lowdb存放数据的文件夹 --没有就需要创建
// const dbDir = path.resolve(__dirname, "../dbs");
// const dbPath = path.resolve(__dirname, "../dbs", "db.json");

// // console.log("dbDir=>", dbDir);
// // console.log("dbDir=>", dbPath);

// try {
//   fs.accessSync(dbDir);
//   // console.log('文件存在！');
// } catch {
//   try {
//     fs.mkdirSync(dbDir, { recursive: true });
//   } catch (error) {
//     if (err) {
//       console.log("dbDir创建目录失败：", err.message);
//     } else {
//     }
//   }
// }

// try {
//   fs.accessSync(dbPath);
//   // console.log('文件存在！');
// } catch {
//   try {
//     fs.writeFileSync(dbPath, "");
//   } catch (error) {
//     console.log("创建db文件失败");
//   }
// }

// const adapter = new FileSync(dbPath);
// const db = low(adapter);
// // 设置db默认值
// db.defaults({ accounts: [] }).write();

// // lowdb相关 -- end

// // 生成唯一id的模块
// const shortid = require("shortid");

// 使用中间件
router.use(checkLogin);

// 路由实现部分
// 账单列表
router.get("/", (req, res) => {
  // 从 数据库 中取出数据
  //lowdb部分
  // const data = db.get("accounts").value();
  // // console.log("db accounts", data);
  accountsModel.find({userid:req.session.userid},(err, data) => {
    if (err) {
      // 查找数据失败
      res.render("account/fail", {
        title: "完蛋了找不到数据~~~ 要不等会在尝试一下",
        url: "",
      });
    } else {
      // 查找数据成功
      // 渲染模板 发送数据
      res.render("account/index", {
        data: data.reverse(),
        username: req.session.username,
      });
    }
  });
});

// 添加账单的表单
router.get("/create", (req, res) => {
  // 渲染模板
  res.render("account/create");
});

// 执行添加
router.post("/create", (req, res) => {
  // 向数据库写入数据
  console.log({ userid: req.session.userid, ...req.body });
  accountsModel.create(
    { userid: req.session.userid, ...req.body },
    (err, data) => {
      if (err) {
        // 添加失败
        console.log(req.body);
        console.log("路由 '/create' 添加数据失败 \n", err);
        res.render("fail", {
          title: "账单添加失败~~~",
          url: "/account",
        });
      } else {
        // 添加成功
        // 渲染成功页面
        res.render("success", {
          title: "账单添加成功~~~",
          url: "/account",
        });
      }
    }
  );
  // // 创建一个唯一id
  // const id = shortid.generate();
  // // 向lowdb 添加数据
  // db.get("accounts")
  //   .unshift({ id, ...req.body })
  //   .write();
});

// 执行删除
router.get("/delete/:id", (req, res) => {
  // 获取id
  const id = req.params.id;
  //  从数据库中删除数据
  accountsModel.deleteOne({ _id: id }, (err, data) => {
    if (err) {
      // 删除数据失败
      res.render("fail", {
        title: "完蛋了删除数据失败了~~~ 要不等会在尝试一下",
        url: "",
      });
    } else {
      // 删除数据成功
      // 渲染成功页面
      res.render("success", {
        title: "删除数据成功~~~",
        url: "/account",
      });
    }
  });

  // // 从 lowdb 中删除指定数据
  // db.get("accounts").remove({ id }).write();
  // 渲染成功的模板
  // res.render("account/success", { title: "账单删除成功~~~", url: "/account" });
});

// 路由实现部分--end

module.exports = router;
